// Copyright [2020] <Weaverzhu>
#include <bits/stdc++.h>
using namespace std;
// #define ONLINE_JUDGE
#ifndef ONLINE_JUDGE
#define dbg(x...) { cerr << "\033[32;1m" << #x << " -> "; err(x); }
void err() { cerr << "\033[39;0m" << endl; }
template<typename T, typename... A>
void err(T a, A... x) { cerr << a << ' '; err(x...); }
#else
#define dbg(...)
#endif

const int N = 1e5+50;

int f(int n, int m)
{
    static int a[N];
    for (int i=1; i<=n; ++i)
        a[i] = m+i-1;
    int ans = 0;
    for (int i=1; i<=n; ++i)
        for (int j=i+1; j<=n; ++j)
            if (a[i] + a[j] <= m+n-1)
                ++ans;
    return ans;
}

int g(int n, int m, int k)
{
    int ans = max(0, (m+k-1)/2-m+1) + max(0, n+m-1-(k+m-1+m)+1);
    return ans;
}


void output(int n, int m) {
    for (int i=1; i<=n; ++i) {
        printf("%d: ", i);
        for (int j=1; j<=m; ++j) {
            printf("%d ", f(i, j));
        }
        putchar('\n');
    }
}

int check(vector<int> &a, int n) {
    for (int i=0; i<n-1; ++i)
        assert(a[i] < a[i+1]);
    int ans = 0;
    for (int i=0; i<n; ++i)
        for (int j=i+1; j<n; ++j)
        {
            int p = lower_bound(a.begin(), a.end(), a[i] + a[j]) - a.begin();
            if (p < n && a[p] == a[i] + a[j])
                ++ans;
        }
    return ans;
}

int n, m;

void extend(vector<int> &a, int &cur, int m) {
    int n = (int)a.size();
    int l1 = a[n-1], l2 = a[n-2];
    for (int j=l1+1; j<=l1+l2; ++j)
    {
        int curx = max(n-(j-n)+1, 0)/2;
        if (curx + cur <= m)
        {
            cur = cur + curx;
            a.push_back(j);
            return;
        }
    }
}

int main(int argc, char const *argv[]) {
    vector<int> ans = {1, 2};
    scanf("%d%d", &n, &m);
    if (n == 1) {
        if (m == 0)
            puts("1");
        else
            puts("-1");
        return 0;
    }
    int cur = 0;
    while (cur < m && ans.size() < n)
        extend(ans, cur, m);
    while (ans.size() < n)
    {
        int mm = ans.size(), M = ans.back() + 1;
        long long st = 1000000000 - 1LL * (n-1-mm) * M;
        if (st <= ans.back())
        {
            puts("-1");
            return 0;
        }

        for (int i=mm; i<n; ++i) {
            ans.push_back(1000000000 - (n-1-i) * M);
        }

        // dbg(check(ans, n), m);
        // assert(check(ans, n) == m);
    }
    if (cur < m)
        puts("-1");
    else {
        // printf("%d\n", (int)ans.size());
        for (int i=0; i<(int)ans.size(); ++i)
            printf("%d%c", ans[i], i==(int)ans.size()-1? '\n':' ');
        // assert(check(ans, n) == m);
    }
    
    return 0;
}
